<?php
//
// Script d'import de fichiers XML Sitra dans une base MySQL
// Version : 0.1
// Auteur : Thomas Collet
// Date : 07/11/2008
// PHP 5.2.6 - extension php_xsl activée
// MySQL 6.0.4alpha
// Testé sur plateforme Windows donc path d'accès aux fichiers plus compliqués que sur Unix
//

// On définit le chemin d'accès aux fichiers XML Sitra
$path_to_xml_sitra_files = 'C:\www\lab.rhonetourisme\import_sitra\xml';

// On définit le fichier XML Sitra simplifié temporaire
$tmp_simplified_sitra_file = $path_to_xml_sitra_files . '\tmp_simplified_sitra_file.xml';

// On définit le fichier XML Sitra simplifié temporaire pour MySQL 
$tmp_simplified_sitra_file_for_mysql = 'C:\\\\www\\\lab.rhonetourisme\\\import_sitra\\\xml\\\\tmp_simplified_sitra_file.xml';

// On se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// On sélectionne la base
mysql_select_db('sitra',$db); 

// On liste les fichiers XML Sitra à importer et on les place dans un tableau
if ($handle = opendir($path_to_xml_sitra_files)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
			$xml_sitra_files[]=$file;
        }
    }
    closedir($handle);
}

// On boucle sur chaque fichier XML Sitra
foreach($xml_sitra_files as $xml_sitra_file){
	
	// Nouvelle instance
	$xslt = new XSLTProcessor();
	
	// Chargement du fichier XML
	$xml = new domDocument();
	$xml -> load('xml/' . $xml_sitra_file);
	
	// Chargement du fichier XSL
	$xsl = new domDocument();
	$xsl -> load('xslt/sitraxmlsimplifier.xsl');
	
	// Import de la feuille XSL
	$xslt -> importStylesheet($xsl);
	
	// On stocke le résultat de la transformation XSL dans un fichier temporaire temp.xml	
	file_put_contents($tmp_simplified_sitra_file, $xslt -> transformToXml($xml));
	
	// On récupère le contenu du fichier temporaire temp.xml
	$xml_source = file_get_contents($tmp_simplified_sitra_file, false);
	
	// On retire les balises vides
	$motif='`<[a-zA-Z0-9_]*/>`i';
	$xml_source_clean=preg_replace($motif, '', $xml_source);
	
	// On remet le code XML nettoyé des balises vides dans le fichier temporaire temp.xml
	file_put_contents($tmp_simplified_sitra_file, $xml_source_clean);
	
	// On importe tout ça dans la BDD
	mysql_query("LOAD XML INFILE '" . $tmp_simplified_sitra_file_for_mysql . "' INTO TABLE objets ROWS identified by '<sitra_object>'") or die("Erreur MySQL : ".mysql_error());
	
}

// On supprime le fichier temporaire
unlink($tmp_simplified_sitra_file);

// On ferme la connexion à mysql
mysql_close(); 

?>